/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package calcul;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Permet d'agir sur des fichiers.
 * Enregistre les valeurs dans des fichiers en vue des benchmarks.
 * @author Jo
 */
public class Fichiers_log {
    
    public enum Benchmark{
        /**
         * Comparaison single/multi en temps.
         */
        SINGLE_MULTI,
        /**
         * Impact du nombre de threads sur le temps d'exec.
         */
        TIME_THREADS;
    }
    
    
    static final String USER_HOME = System.getProperty("user.home");
    static final String FILE_SEPARATOR = System.getProperty("file.separator");
    
    /**
     * Vide le fichier correspondant. Typiquement appelee en debut de programme, pour demarrer un nouveau benchmark.
     * @param b 
     */
    public static void viderFichierLog(Benchmark b){
        String chemin_fichier = USER_HOME + FILE_SEPARATOR;
        chemin_fichier += b.equals(Benchmark.SINGLE_MULTI) ? "log_montecarlo_singleMulti.csv" : "log_montecarlo_timeThreads.csv";
        
        BufferedWriter out = null;
        try {
            out = new BufferedWriter(new FileWriter(chemin_fichier));
            out.write("");
            out.close();
        } catch (IOException ex) {
            Logger.getLogger(Fichiers_log.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    /**
     * Appelee apres chaque calcul. Ajoute une ligne a la fin du fichier correspondant.
     * @param str Ligne a ajouter en fin de fichier.
     */
    public static void ajouterAuFichierLog(String str, Benchmark b){
        String chemin_fichier = USER_HOME + FILE_SEPARATOR;
        chemin_fichier += b.equals(Benchmark.SINGLE_MULTI) ? "log_montecarlo_singleMulti.csv" : "log_montecarlo_timeThreads.csv";
        
        BufferedWriter out = null;
        try {
            out = new BufferedWriter(new FileWriter(chemin_fichier, true));
            
            System.out.println(str);
            out.append(str);
            out.newLine();
            
            out.close();
            
        } catch (IOException ex) {
            Logger.getLogger(Fichiers_log.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
